﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AirTickets
{
    public abstract class Avion:IComparable
    {
        protected List<Asiento> _asientos;
        protected string _matricula;

        public abstract void CrearAsientos();

        public Avion(string matricula)
        {
            _matricula = matricula;
            CrearAsientos();
        }

        public string Matricula { get; set; }

        public Avion()
        {

        }

        public List<Asiento> Asientos()
        {
            List<Asiento> l = _asientos.Where(x=>true).ToList<Asiento>();
            return l;
        }

        #region IComparable Members

        public int CompareTo(object obj)
        {
            if (obj is Avion)
            {
                Avion a = (Avion)obj;
                return this.Matricula.CompareTo(a.Matricula);
            }
            else throw new Exception("No es un objeto de la clase Avion");
        }

        #endregion
    }

    class Avion_A340_SingleClass: Avion
    {
        public Avion_A340_SingleClass() : base() {
            CrearAsientos();
        }

        public override void CrearAsientos()
        {
            _asientos = new List<Asiento>();
            char[] letters = { 'A', 'C', 'D', 'E', 'F', 'G' , 'H', 'K'};
            Asiento _asiento;
            for(int i=1;i<=46;i++)
                foreach (char j in letters)
                {
                    _asiento = new Asiento(i, j);
                    _asientos.Add(_asiento);
                }
        }
    }
}
